namespace ext.menu
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// The base class for all items that render into menus. BaseItem provides default rendering, activated state
	/// management and base configuration options shared by all menu components.
	/// </summary>
	/// <definedin>src\widgets\menu\BaseItem.js</definedin>
	[ScriptName("BaseItem")]
	[ScriptNamespace("Ext.menu")]
	[Imported()]
	public partial class BaseItem : ext.Component
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="config">Configuration options</param>
		public BaseItem(ext.menu.BaseItem_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public BaseItem()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// A function that will handle the click event of this menu item (optional).
		/// The handler is passed the following parameters:   b : Item This menu Item.   e : EventObject The click event.
		/// </summary>
		/// <htmlSummary>
		/// A function that will handle the click event of this menu item (optional).
		/// The handler is passed the following parameters:&lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
		/// &lt;li&gt;&lt;code&gt;b&lt;/code&gt; : Item&lt;div class=&quot;sub-desc&quot;&gt;This menu Item.&lt;/div&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;code&gt;e&lt;/code&gt; : EventObject&lt;div class=&quot;sub-desc&quot;&gt;The click event.&lt;/div&gt;&lt;/li&gt;
		/// &lt;/ul&gt;&lt;/div&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("handler")]
		public System.Delegate Handler;
		
		/// <summary>The scope (this reference) in which the handler function will be called.</summary>
		/// <htmlSummary>The scope (&lt;tt&gt;&lt;b&gt;this&lt;/b&gt;&lt;/tt&gt; reference) in which the handler function will be called.</htmlSummary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("scope")]
		public object Scope;
		
		/// <summary>True if this item can be visually activated (defaults to false)</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("canActivate")]
		public bool CanActivate;
		
		/// <summary>The CSS class to use when the item becomes activated (defaults to &quot;x-menu-item-active&quot;)</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("activeClass")]
		public string ActiveClass;
		
		/// <summary>True to hide the containing menu after this item is clicked (defaults to true)</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("hideOnClick")]
		public bool HideOnClick;
		
		/// <summary>Length of time in milliseconds to wait before hiding after a click (defaults to 1)</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("clickHideDelay")]
		public System.Number ClickHideDelay;
		
		/// <summary>Fires when this item is clicked</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("clickEventName")]
		public const string ClickEventName = "click";
		
		/// <summary>Fires when this item is activated</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("activateEventName")]
		public const string ActivateEventName = "activate";
		
		/// <summary>Fires when this item is deactivated</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("deactivateEventName")]
		public const string DeactivateEventName = "deactivate";
		#endregion
		
		#region Properties
		/// <summary>The parent Menu of this Item.</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("parentMenu")]
		[IntrinsicProperty()]
		public ext.menu.Menu ParentMenu
		{
			get
			{
				throw new System.Exception("Imported - not implemented");
			}
			set
			{
			}
		}
		#endregion
		
		#region Methods
		/// <summary>
		/// Sets the function that will handle click events for this item (equivalent to passing in the {@link #handler}
		/// config property). If an existing handler is already registered, it will be unregistered for you.
		/// </summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		/// <param name="handler">The function that should be called on click</param>
		/// <param name="scope">The scope (<c>this</c> reference) in which the handler function is executed. Defaults to this menu item.</param>
		[ScriptName("setHandler")]
		public void SetHandler(System.Delegate handler, object scope)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>Fires when this item is clicked</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("click")]
		public event ext.auto.Delegate_ext_menu_BaseItem_And_ext_EventObject Click;
		
		/// <summary>Fires when this item is activated</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("activate")]
		public event ext.auto.Delegate_ext_menu_BaseItem Activate;
		
		/// <summary>Fires when this item is deactivated</summary>
		/// <definedin>src\widgets\menu\BaseItem.js</definedin>
		[ScriptName("deactivate")]
		public event ext.auto.Delegate_ext_menu_BaseItem Deactivate;
		#endregion
	}
}
